package day15.FileAndIodemo;

import java.io.File;

public class diguidemo2
{
    public static void main(String[] args)
    {   String path="D:/";
        File file=new File(path);
        try {
            Searchfile("D:/", "QQ.exe");//它主要是和\n进行区分，所以一般是\\和/
        } catch (Exception ex) {
            ex.printStackTrace();
            System.out.println("文件不存在");
        }
    }

    private static void Searchfile(String path,String name)throws Exception
    {
        File file=new File(path);//即使路径是非法的也会记住这个路径，毕竟是指针嘛，不可能为null
        if( file.isFile()|| !file.exists())return;//这个意思不能是单文件，我提供的文件本身（存在）。只能保证他是个文件夹而已


          File [] files=file.listFiles();//开始把D盘的一级文件对象收集起来，但是自己未必有权限啊
         if(files!=null)//保证自己有权限访问当前文件夹，不是d盘报没路径，而是进入了d盘某个文件夹，访问不了
         {
             for(File f:files)
             {
                 if(f.isFile())
                 {
                     if(f.getName().equals(name))
                     {
                         System.out.println(f.getAbsolutePath()+"找到了");
                         Runtime r=Runtime.getRuntime();
                         r.exec(f.getAbsolutePath());//主要是java怕你路径不对，会抛异常，所以要处理一下
                         break;//他只是找到了某一层的qq.exe，但是他递归了很多个方法，所以他结束了其中一个方法的for，还有很多方法
                     }
                 }
                 else
                 {
                     Searchfile(f.getAbsolutePath(),name);//又拿到了某一个文件夹路径开始递归
                 }
             }
         }
         else
         {
             System.out.println("没权限");
         }
    }


    //递归思想
    public static int func(int n)//也就是找f（n+1），f（n），f（n—1）的关系
    {
        if(n==1) return 1;
        return func(n-1)+n;//往递归终点去冲，给个递归终点，f（1）=1
    }

}
